import request from '@/utils/request'

export const roleApi = {
  /**
   * 获取全部角色列表
   * @returns Promise 角色数组
   */
  getRoles() {
    return request.get('/role')
  },

  /**
   * 分页获取角色列表
   * @param {number} pageIndex 当前页码（从0开始，与后端一致）
   * @param {number} pageSize 每页数量
   * @param {object} filters 其他筛选条件
   * @returns Promise 分页角色数据
   */
  getRolesPaged(pageIndex = 0, pageSize = 10, filters = {}) {
    // 提取筛选参数
    const { name, code, status } = filters;
    
    return request.get('/role/paged', {
      params: {
        pageIndex,
        pageSize,
        name,
        code,
        status
      }
    })
  },

  /**
   * 获取角色详情
   * @param {string|number} id 角色ID
   * @returns Promise 角色详情对象
   */
  getRoleById(id) {
    return request.get(`/role/${id}`)
  },

  /**
   * 创建新角色
   * @param {object} param0 角色信息（RoleName, RoleCode, Description）
   * @returns Promise 创建结果
   */
  createRole({ RoleName, RoleCode, Description }) {
    return request.post('/role', { RoleName, RoleCode, Description })
  },

  /**
   * 更新角色信息
   * @param {string|number} id 角色ID
   * @param {object} param1 角色信息（RoleName, RoleCode, Description）
   * @returns Promise 更新结果
   */
  updateRole(id, { RoleName, RoleCode, Description }) {
    return request.put('/role', { 
      Id: id, 
      RoleName, 
      RoleCode, 
      Description 
    })
  },

  /**
   * 删除角色
   * @param {string|number} id 角色ID
   * @returns Promise 删除结果
   */
  deleteRole(id) {
    return request.delete(`/role/${id}`)
  },

  /**
   * 批量新增角色
   * @param {Array} roleList 角色对象数组
   * @returns Promise 批量创建结果
   */
  batchCreateRole(roleList) {
    return request.post('/role/batch', roleList)
  },

  /**
   * 获取角色权限列表
   * @param {string|number} roleId 角色ID
   * @returns Promise 权限数组
   */
  getRolePermissions(roleId) {
    return request.get(`/role/${roleId}/permissions`)
  },

  /**
   * 向角色分配单个权限
   * @param {string|number} roleId 角色ID
   * @param {string|number} permissionId 权限ID
   * @returns Promise 分配结果
   */
  assignPermission(roleId, permissionId) {
    return request.post(`/role/${roleId}/assign-permission/${permissionId}`)
  },

  /**
   * 从角色移除单个权限
   * @param {string|number} roleId 角色ID
   * @param {string|number} permissionId 权限ID
   * @returns Promise 移除结果
   */
  removePermission(roleId, permissionId) {
    return request.post(`/role/${roleId}/remove-permission/${permissionId}`)
  },

  /**
   * 获取所有权限列表（用于权限分配）
   * @returns Promise 权限数组
   */
  getAllPermissions() {
    return request.get('/permission')
  },

  /**
   * 切换角色状态（启用/禁用）
   * @param {string|number} id 角色ID
   * @param {number} status 状态值（1启用，0禁用）
   * @returns Promise 切换结果
   */
  toggleRoleStatus(id, status) {
    return request.patch(`/role/${id}/status`, { status })
  }
}
